func (m *default{{.upperStartCamelObject}}Model) FindOne(ctx context.Context, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) {

	var resp {{.upperStartCamelObject}}
	var res = &jrpc.Response{}
	var err error

    res, err = m.Call(ctx, "FindOne", {{.lowerStartCamelPrimaryKey}})
	if err != nil {
		return nil, err
	}

	if res.Error != nil {
		return nil, res.Error
	}

	err = res.GetObject(&resp)
	if err != nil {
		return nil, err
	}

	return &resp, nil
}

func (m *default{{.upperStartCamelObject}}Model) List(ctx context.Context, f *filter.QueryRequest) ([]*{{.upperStartCamelObject}}, int, error) {
	
	var resp =  struct {
	Total int       `json:"total"`
	List  []*{{.upperStartCamelObject}} `json:"list"`
	}{}

	var res = &jrpc.Response{}
	var err error

	if f != nil {
		res, err = m.Call(ctx, "List", f)
	} else {
		res, err = m.Call(ctx, "List")
	}

	if err != nil {
		return nil, 0, err
	}

	if res.Error != nil {
		return nil, 0, res.Error
	}

	err = res.GetObject(&resp)
	if err != nil {
		return nil, 0, err
	}
	return resp.List, resp.Total , nil
	
}

func (m *default{{.upperStartCamelObject}}Model) Call(ctx context.Context, method string, args ...any) (*jrpc.Response, error) {
	if m.session != 0 {
		args = append(args, TxID{TxID: m.session})
		return m.client.Call(ctx, m.formatMethod(method), args...)
	} else {
		args = append(args, TxID{TxID: 0})
		return m.client.Call(ctx, m.formatMethod(method), args...)
	}
}